package com.sg.dto.integration.framework;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc DeptSourceDataDto
 * @使用场景
 */
@Data
public class DeptSourceDataDto extends BaseDto implements Serializable {

    /**
     * 部门编号
     */
    @ApiModelProperty("部门编号")
    private String deptNumber;

    /**
     * 部门名称（中文）
     */
    @ApiModelProperty("部门名称（中文）")
    private String deptName;

    /**
     * 部门名称（英文）
     */
    @ApiModelProperty("部门名称（英文）")
    private String deptEnName;

    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    private String deptShortName;

    /**
     * 上级部门编号
     */
    @ApiModelProperty("上级部门编号")
    private String parentDeptNumber;

    /**
     * 上级部门名称（中文）
     */
    @ApiModelProperty("上级部门名称（中文）")
    private String parentDeptName;

    /**
     * 部门类型名称
     */
    @ApiModelProperty("部门类型名称")
    private String typeDictionaryName;

    /**
     * 分管领导工号
     */
    @ApiModelProperty("分管领导工号")
    private String deptLeaderCode;

    /**
     * 分管领导姓名
     */
    @ApiModelProperty("分管领导姓名")
    private String deptLeaderName;

    /**
     * 行政主管工号
     */
    @ApiModelProperty("行政主管工号")
    private String directorCode;

    /**
     * 行政主管名称
     */
    @ApiModelProperty("行政主管名称")
    private String directorName;

    /**
     * 党团主管工号
     */
    @ApiModelProperty("党团主管工号")
    private String partyAndYouthDirectorCode;

    /**
     * 党团主管名称
     */
    @ApiModelProperty("党团主管名称")
    private String partyAndYouthDirectorName;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 数据是否完整 TRUE:是 FALSE:否
     */
    @ApiModelProperty("数据是否完整")
    private String dataIsComplete;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        DeptSourceDataDto that = (DeptSourceDataDto) o;
        return (
                deptNumber == that.deptNumber &&
                        deptName == that.deptName &&
                        deptEnName == that.deptEnName &&
                        deptShortName == that.deptShortName &&
                        parentDeptNumber == that.parentDeptNumber &&
                        parentDeptName == that.parentDeptName &&
                        typeDictionaryName == that.typeDictionaryName &&
                        deptLeaderCode == that.deptLeaderCode &&
                        deptLeaderName == that.deptLeaderName &&
                        directorCode == that.directorCode &&
                        directorName == that.directorName &&
                        partyAndYouthDirectorCode == that.partyAndYouthDirectorCode &&
                        partyAndYouthDirectorName == that.partyAndYouthDirectorName &&
                        orderNumber == that.orderNumber &&
                        dataIsComplete == that.dataIsComplete
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                deptNumber,
                deptName,
                deptEnName,
                deptShortName,
                parentDeptNumber,
                parentDeptName,
                typeDictionaryName,
                deptLeaderCode,
                deptLeaderName,
                directorCode,
                directorName,
                partyAndYouthDirectorCode,
                partyAndYouthDirectorName,
                orderNumber,
                dataIsComplete
        );
    }

}
